package cn.bookcycle.paypage.util;

import org.json.JSONException;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import cn.bookcycle.paypage.constant.BusinessData;
import cn.bookcycle.paypage.constant.Symbol;

/**
 * 处理支付微服务回调时发送过来的消息
 *
 * @author liufenglin
 * @date 2018年3月15日
 */
public class DealInfo implements Runnable {
	private static final Logger logger = LoggerFactory.getLogger(DealInfo.class);
	
	/** 支付微服务发过来的json消息 */
	private String json;
	
	public DealInfo(String json) {
		this.json = json;
	}
	/**
	 * 收到支付微服务的json消息后，进行后续操作的业务函数
	 * 
	 * @param json
	 */
	private void business() {
		logger.warn("paypage listener 收到的消息：{}", json);
		// 解析获取到的json格式消息
		JSONObject jsonObject = null;
		try {
			jsonObject = new JSONObject(json);
		} catch (JSONException e) {
			jsonObject = new JSONObject();
			logger.warn("business() jsonObject 异常！！！！！！！");
		}
		String status = null;
		try {
			status = jsonObject.getString(Symbol.STATUS);
		} catch (JSONException e) {
			logger.warn("business() status 异常！！！！！！！");
		}
		String tradeNo = null;
		try {
			tradeNo = jsonObject.getString(Symbol.TRADE_NO);
		} catch (JSONException e) {
			logger.warn("business() tradeNo 异常！！！！！！！");
		}
		logger.warn("回调信息status：{}", status);
		logger.warn("回调信息tradeNo：{}", tradeNo);
		
		if (BusinessData.REQ_PAID.equals(status)) {
			// 如果支付成功，就去修改数据库中，订单的状态属性
			try {
				DaoUtil.modifyOrderStatus(tradeNo, BusinessData.ORDER_PAID_CODE);
			} catch (JSONException e) {
				logger.warn("修改订单状态时，拼接JSON数据出现异常！！！！");
			}
		} else {
			// // 如果尚未支付
		}
	}

	@Override
	public void run() {
		business();
	}

}
